/**
 * 
 */
package cc.dogtailflower.framework.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import cc.dogtailflower.framework.exception.AppException;

/**
 * 反射工具类，根据class，利用反射构造出实例对象
 * @author cc
 *
 */
public class ReflectionUtil {

	/*
	 * 根据class创建该实例对象
	 */
	public static Object getInstance(Class<?> cls){
		
		Object instance;
		try{
			instance = cls.newInstance();
		}catch(Exception e){
			e.printStackTrace();
			throw new AppException(e.getMessage());
		}
		return instance;
	}
	
	/*
	 * object对象
	 * value需要set的成员变量的值
	 */
	public static void setField(Object object,Field field,Object value){
		try{
			field.setAccessible(true);
			field.set(object, value);
		}catch(Exception e){
			e.printStackTrace();
			throw new AppException(e.getMessage());
		}
	}
	
	/*
	 * 反射调用 类中的方法
	 */
	public static Object invokerMethod(Object object,Method method,Object... args){
		Object result;
		try{
			method.setAccessible(true);
			result = method.invoke(object, args);
		}catch(Exception e){
			e.printStackTrace();
			throw new AppException(e.getMessage());
		}
		return result;
	}
}
